
#pragma once
#include "stdafx.h"

class CLASS_DECLSPEC CWicBitmapCodecInfo
{
    //==============================================================================
    // IWICComponentInfo
    //==============================================================================
public:
    CWicBitmapCodecInfo(void);
    CWicBitmapCodecInfo(CWicBitmapCodecInfo const &);
    virtual ~CWicBitmapCodecInfo(void);
    CWicBitmapCodecInfo& operator=(CWicBitmapCodecInfo const &);

    //==============================================================================
    // IWICBitmapCodecInfo
    //==============================================================================
public:
    virtual HRESULT GetContainerFormat(
        /* [out] */ GUID *pguidContainerFormat);

    virtual HRESULT GetPixelFormats(
        /* [in] */ UINT cFormats,
        /* [size_is][unique][out][in] */ GUID *pguidPixelFormats,
        /* [out] */ UINT *pcActual);

    virtual HRESULT GetColorManagementVersion(
        /* [in] */ UINT cchColorManagementVersion,
        /* [size_is][unique][out][in] */ WCHAR *wzColorManagementVersion,
        /* [out] */ UINT *pcchActual);

    virtual HRESULT GetDeviceManufacturer(
        /* [in] */ UINT cchDeviceManufacturer,
        /* [size_is][unique][out][in] */ WCHAR *wzDeviceManufacturer,
        /* [out] */ UINT *pcchActual);

    virtual HRESULT GetDeviceModels(
        /* [in] */ UINT cchDeviceModels,
        /* [size_is][unique][out][in] */ WCHAR *wzDeviceModels,
        /* [out] */ UINT *pcchActual);

    virtual HRESULT GetMimeTypes(
        /* [in] */ UINT cchMimeTypes,
        /* [size_is][unique][out][in] */ WCHAR *wzMimeTypes,
        /* [out] */ UINT *pcchActual);

    virtual HRESULT GetFileExtensions(
        /* [in] */ UINT cchFileExtensions,
        /* [size_is][unique][out][in] */ WCHAR *wzFileExtensions,
        /* [out] */ UINT *pcchActual);

    virtual HRESULT DoesSupportAnimation(
        /* [out] */ BOOL *pfSupportAnimation);

    virtual HRESULT DoesSupportChromakey(
        /* [out] */ BOOL *pfSupportChromakey);

    virtual HRESULT DoesSupportLossless(
        /* [out] */ BOOL *pfSupportLossless);

    virtual HRESULT DoesSupportMultiframe(
        /* [out] */ BOOL *pfSupportMultiframe);

    virtual HRESULT MatchesMimeType(
        /* [in] */ LPCWSTR wzMimeType,
        /* [out] */ BOOL *pfMatches);

    //==============================================================================
    // IWICComponentInfo
    //==============================================================================
public:
    virtual WICComponentType GetComponentType();

    virtual HRESULT GetCLSID(/* [out] */ CLSID *pclsid);

    virtual DWORD GetSigningStatus();

    virtual UINT GetAuthor(UINT cchAuthor, WCHAR *wzAuthor);

    virtual HRESULT GetVendorGUID(/* [out] */ GUID *pguidVendor);

    virtual UINT GetVersion(UINT cchVersion, WCHAR *wzVersion);

    virtual UINT GetSpecVersion(UINT cchSpecVersion, WCHAR *wzSpecVersion);

    virtual UINT GetFriendlyName(UINT cchFriendlyName, WCHAR *wzFriendlyName);

private:
    IWICBitmapCodecInfo  *m_pIWICBitmapCodecInfo;
};

